package com.dragon.common.modules.uaa.service.assistants.def;

import com.dragon.common.modules.uaa.web.models.results.LoginResult;
import com.dragon.common.spring.annotations.Assistant;

import java.util.List;

/**
 * @author Chris Chan
 * Create On 2025/8/8 下午3:13
 * Use for:
 * Explain:
 */
@Assistant
public interface LoginAssistant {

    /**
     * 检查密码
     *
     * @param password        密码
     * @param encodedPassword 编码后的密码
     * @return 是否正确
     */
    boolean matches(String password, String encodedPassword);

    /**
     * 构建登录结果
     *
     * @param userCode
     * @param username
     * @return
     */
    LoginResult buildLoginResult(Long userCode, String username);


    /**
     * 获取权限
     *
     * @param userCode
     * @return
     */
    List<String> getAuthorities(long userCode);

    /**
     * 从刷新令牌中获取用户编码
     *
     * @param refreshToken 刷新令牌
     * @return 用户编码
     */
    boolean validateToken(String refreshToken);
}
